/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Andre
 */
@Entity
@Table(name = "condicoesContrato")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "CondicoesContrato.findAll", query = "SELECT c FROM CondicoesContrato c"),
    @NamedQuery(name = "CondicoesContrato.findByIdContrato", query = "SELECT c FROM CondicoesContrato c WHERE c.contrato.idContrato = :idContrato"),
    @NamedQuery(name = "CondicoesContrato.findByIdCondicaoPagamento", query = "SELECT c FROM CondicoesContrato c WHERE c.condicaoPagamento.idCondicaoPagamento = :idCondicaoPagamento")})
public class CondicoesContrato implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idCondicoesContrato", nullable = false)
    protected Integer idCondicoesContrato;
    
    @OneToMany(mappedBy="condicoesContrato")
    private List<TituloReceber> tituloReceberList;
    
    @Basic(optional = false)
    @NotNull
    @Lob
    @Size(min = 1, max = 65535)
    @Column(name = "observacao")
    private String observacao;
    
    @Basic(optional = false)
    @NotNull
    @Column(name = "valor")
    private double valor;
    
    @JoinColumn(name = "idCondicaoPagamento", referencedColumnName = "idCondicaoPagamento")
    @ManyToOne(optional = false)
    private CondicaoPagamento condicaoPagamento;
    
    @JoinColumn(name = "idContrato", referencedColumnName = "idContrato")
    @ManyToOne(optional = false)
    private Contrato contrato;

    public CondicoesContrato() {
    }

    public CondicoesContrato(String observacao) {
        this.observacao = observacao;
    }

    public Integer getIdCondicoesContrato() {
        return idCondicoesContrato;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public CondicaoPagamento getCondicaoPagamento() {
        return condicaoPagamento;
    }

    public void setCondicaoPagamento(CondicaoPagamento condicaoPagamento) {
        this.condicaoPagamento = condicaoPagamento;
    }

    public Contrato getContrato() {
        return contrato;
    }

    public void setContrato(Contrato contrato) {
        this.contrato = contrato;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idCondicoesContrato != null ? idCondicoesContrato.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof CondicoesContrato)) {
            return false;
        }
        CondicoesContrato other = (CondicoesContrato) object;
        if ((this.idCondicoesContrato == null && other.idCondicoesContrato != null) || (this.idCondicoesContrato != null && !this.idCondicoesContrato.equals(other.idCondicoesContrato))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "modelo.CondicoesContrato[ idCondicoesContrato=" + idCondicoesContrato + " ]";
    }

    @XmlTransient
    public List<TituloReceber> getTituloReceberList() {
        return tituloReceberList;
    }

    public void setTituloReceberList(List<TituloReceber> tituloReceberList) {
        this.tituloReceberList = tituloReceberList;
    }

    public double getValor() {
        return valor;
    }

    /**
     * @param valor the valor to set
     */
    public void setValor(double valor) {
        this.valor = valor;
    }
    
}
